/*! \file GlobalFunctions.h
  * Signatures for various functions that module writers should be aware of.
  */ 

/// <summary>
/// Adds the specified block renderer instance to the renderer list.
/// </summary>
/// <param name="blockID">The ID of the block to handle.</param>
/// <param name="renderer">Handle to an IBlockRenderer instance to add.</param>
extern void AddRenderer(const int &blockID, IBlockRenderer *renderer);

/// <summary>
/// Query whether or not a specific module is loaded.
/// </summary>
/// <param name="module">The friendly name of the module to query.</param>
/// <returns>True if the module is loaded, false if not.</returns>
extern bool IsModuleLoaded(const string &module);

/// <summary>
/// Create a renderer type from another module.
/// </summary>
/// <param name="module">The friendly name of the module to instantiate from.</param>
/// <param name="rendererType">The fully qualified name of the type to instantiate.</param>
/// <returns>A handle to the instance of the new block renderer.</returns>
extern IBlockRenderer *CreateModuleRenderer(const string &module, const string &rendererType);